//package com.bestcem.xm.common.core.oss.dao.impl;
//
//import cn.hutool.core.collection.CollUtil;
//import com.bestcem.xm.common.core.oss.dao.OssRecordDao;
//import com.bestcem.xm.common.core.oss.dao.mapper.OssRecordMapper;
//import com.bestcem.xm.common.core.oss.entity.OssRecord;
//import com.bestcem.xm.common.core.oss.entity.OssRecordEntity;
//import com.bestcem.xm.common.core.oss.enums.OssPathEnum;
//import org.bson.types.ObjectId;
//import org.springframework.stereotype.Repository;
//
//import javax.annotation.Resource;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//import java.util.Objects;
//
///**
// * @author liheng
// * @version v1.0
// * @date 2021/10/18 16:14
// */
//@Repository
//public class NewOssRecordMapper implements OssRecordDao {
//
//    @Resource
//    private OssRecordMapper ossRecordMapper;
//
//    @Override
//    public OssRecordEntity saveEntity(OssRecordEntity entity) {
//        OssRecord ossRecord = this.changeDao(entity);
//        ossRecord.setId(ObjectId.get().toHexString());
//        ossRecord.setCreateTime(new Date());
//        ossRecordMapper.insert(ossRecord);
//        return this.changeDao(ossRecord);
//    }
//
//    @Override
//    public OssRecordEntity insertSimple(String ossKey, String fileName, String url, String uuid, OssPathEnum modulePath, Date expireDate, String localDir, String remark, String ossType) {
//        OssRecordEntity ossRecordEntity = new OssRecordEntity();
//        ossRecordEntity.setOssKey(ossKey);
//        ossRecordEntity.setFileName(fileName);
//        ossRecordEntity.setUrl(url);
//        // 默认是未删除
//        ossRecordEntity.setDeleted(false);
//        ossRecordEntity.setOssUUID(uuid);
//        ossRecordEntity.setModuleName(modulePath.getPath());
//        // 默认为临时文件
//        ossRecordEntity.setTemp(false);
//        ossRecordEntity.setRemark(remark);
//        ossRecordEntity.setLocalDir(localDir);
//        ossRecordEntity.setExpireDate(Objects.isNull(expireDate) ? null : expireDate);
//        ossRecordEntity.setOssType(ossType);
//        return this.saveEntity(ossRecordEntity);
//    }
//
//    @Override
//    public OssRecordEntity insertSimple2(String ossKey, String fileName, String url, String uuid, String path, Date expireDate, String localDir, String remark, String ossType, OssPathEnum modulePath) {
//        OssRecordEntity ossRecordEntity = new OssRecordEntity();
//        ossRecordEntity.setOssKey(ossKey);
//        ossRecordEntity.setFileName(fileName);
//        ossRecordEntity.setUrl(url);
//        // 默认是未删除
//        ossRecordEntity.setDeleted(false);
//        ossRecordEntity.setOssUUID(uuid);
//        ossRecordEntity.setModuleName(modulePath.getPath());
//        // 默认为临时文件
//        ossRecordEntity.setTemp(false);
//        ossRecordEntity.setRemark(remark);
//        ossRecordEntity.setLocalDir(localDir);
//        ossRecordEntity.setExpireDate(Objects.isNull(expireDate) ? null : expireDate);
//        ossRecordEntity.setOssType(ossType);
//        return this.saveEntity(ossRecordEntity);
//    }
//
//    @Override
//    public OssRecordEntity insertTemp(String ossKey, String fileName, String url, String uuid, OssPathEnum modulePath, Date expireDate, String localDir, String remark, String ossType) {
//        OssRecordEntity ossRecordEntity = new OssRecordEntity();
//        ossRecordEntity.setOssKey(ossKey);
//        ossRecordEntity.setFileName(fileName);
//        ossRecordEntity.setUrl(url);
//        // 默认是未删除
//        ossRecordEntity.setDeleted(false);
//        ossRecordEntity.setOssUUID(uuid);
//        ossRecordEntity.setModuleName(modulePath.getPath());
//        // 默认为临时文件
//        ossRecordEntity.setTemp(true);
//        ossRecordEntity.setRemark(remark);
//        ossRecordEntity.setLocalDir(localDir);
//        ossRecordEntity.setExpireDate(Objects.isNull(expireDate) ? null : expireDate);
//        ossRecordEntity.setOssType(ossType);
//        return this.saveEntity(ossRecordEntity);
//    }
//
//    @Override
//    public long deleteRecord(List<String> ids) {
//        return ossRecordMapper.deleteByIds(ids);
//    }
//
//    @Override
//    public List<OssRecordEntity> findTempByModule(OssPathEnum modulePath, int pageSize) {
//        List<OssRecord> expiredOssRecords = ossRecordMapper.findExpireTempByModule(modulePath.getPath(), pageSize, new Date());
//
//        return this.changeDaoList(expiredOssRecords);
//    }
//
//    @Override
//    public OssRecordEntity findByKey(String key) {
//        OssRecord ossRecord = ossRecordMapper.getByOssKey(key);
//        return this.changeDao(ossRecord);
//    }
//
//    @Override
//    public OssRecordEntity findById(String id) {
//        OssRecord ossRecord = ossRecordMapper.selectByPrimaryKey(id);
//        return this.changeDao(ossRecord);
//    }
//
//    @Override
//    public long updateIsDeleted(String id) {
//        return ossRecordMapper.updateDeletedById(id);
//    }
//
//    private OssRecord changeDao(OssRecordEntity entity) {
//        OssRecord ossRecord = new OssRecord();
//
//        ossRecord.setUrl(entity.getUrl());
//        ossRecord.setOssKey(entity.getOssKey());
//        ossRecord.setFileName(entity.getFileName());
//        ossRecord.setOssUuid(entity.getOssUUID());
//        ossRecord.setModuleName(entity.getModuleName());
//        ossRecord.setTemp(entity.isTemp() ? 1 : 2);
//        ossRecord.setExpireDate(entity.getExpireDate());
//        ossRecord.setLocalDir(entity.getLocalDir());
//        ossRecord.setDeleted(entity.isDeleted() ? 1 : 2);
//        ossRecord.setRemark(entity.getRemark());
//        return ossRecord;
//    }
//
//    private OssRecordEntity changeDao(OssRecord entity) {
//        if (Objects.isNull(entity)) {
//            return null;
//        }
//        OssRecordEntity ossRecordEntity = new OssRecordEntity();
//        ossRecordEntity.setId(entity.getId());
//        ossRecordEntity.setUrl(entity.getUrl());
//        ossRecordEntity.setOssKey(entity.getOssKey());
//        ossRecordEntity.setFileName(entity.getFileName());
//        ossRecordEntity.setOssUUID(entity.getOssUuid());
//        ossRecordEntity.setModuleName(entity.getModuleName());
//        ossRecordEntity.setTemp(Objects.nonNull(entity.getTemp()) && entity.getTemp().equals(1));
//        ossRecordEntity.setExpireDate(entity.getExpireDate());
//        ossRecordEntity.setLocalDir(entity.getLocalDir());
//        ossRecordEntity.setDeleted(Objects.nonNull(entity.getDeleted()) && entity.getTemp().equals(1));
//        ossRecordEntity.setRemark(entity.getRemark());
//        ossRecordEntity.setCreatedDate(entity.getCreateTime());
//        ossRecordEntity.setUpdateDate(entity.getUpdateTime());
//        return ossRecordEntity;
//    }
//
//    private List<OssRecordEntity> changeDaoList(List<OssRecord> ossRecords) {
//        List<OssRecordEntity> entities = new ArrayList<>(10);
//
//        if (CollUtil.isEmpty(ossRecords)) {
//            return new ArrayList<>(5);
//        }
//
//        for (OssRecord ossRecord : ossRecords) {
//            entities.add(this.changeDao(ossRecord));
//        }
//        return entities;
//    }
//}
